package com.ruoyi.course.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 学期信息对象 academic_term
 * 
 * @author chenxl
 * @date 2025-08-29
 */
public class AcademicTerm extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    //@JsonIgnore
    /** 主键，使用字符串ID */
    private String id;

    /** 学期编码，如 2025-2026-1 或 2025-2026-S */
    @Excel(name = "学期编码，如 2025-2026-1 或 2025-2026-S")
    private String termCode;

    /** 学期名称，如 第一学期、暑期小学期 */
    @Excel(name = "学期名称，如 第一学期、暑期小学期")
    private String termName;

    /** 关联的学年ID（字符串类型） */
    @Excel(name = "关联的学年ID", readConverterExp = "字=符串类型")
    private String yearId;

    /** 学期开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "学期开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 学期结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "学期结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 教学周数 */
    //@JsonIgnore
    @Excel(name = "教学周数")
    private Long teachingWeeks;

    /** 校历第1周的起始日期 */
    @JsonIgnore
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "校历第1周的起始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date calendarStartWeek;

    /** 状态：0=未开始, 1=进行中, 2=已结束 */
    @Excel(name = "状态：0=未开始, 1=进行中, 2=已结束")
    private Long status;

    /** 创建时间 */
    @JsonIgnore
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonIgnore
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    /**dictionary_value字典键值*/
    @Excel(name = "dictionary_value字典键值")
    private String dictionaryValue;

    public void setId(String id) 
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }

    public void setTermCode(String termCode) 
    {
        this.termCode = termCode;
    }

    public String getTermCode() 
    {
        return termCode;
    }

    public void setTermName(String termName) 
    {
        this.termName = termName;
    }

    public String getTermName() 
    {
        return termName;
    }

    public void setYearId(String yearId) 
    {
        this.yearId = yearId;
    }

    public String getYearId() 
    {
        return yearId;
    }

    public void setStartDate(Date startDate) 
    {
        this.startDate = startDate;
    }

    public Date getStartDate() 
    {
        return startDate;
    }

    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }

    public void setTeachingWeeks(Long teachingWeeks) 
    {
        this.teachingWeeks = teachingWeeks;
    }

    public Long getTeachingWeeks() 
    {
        return teachingWeeks;
    }

    public void setCalendarStartWeek(Date calendarStartWeek) 
    {
        this.calendarStartWeek = calendarStartWeek;
    }

    public Date getCalendarStartWeek() 
    {
        return calendarStartWeek;
    }

    public void setStatus(Long status) 
    {
        this.status = status;
    }

    public Long getStatus() 
    {
        return status;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }
    public String getDictionaryValue() {
        return dictionaryValue;
    }

    public void setDictionaryValue(String dictionaryValue) {
        this.dictionaryValue = dictionaryValue;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("termCode", getTermCode())
            .append("termName", getTermName())
            .append("yearId", getYearId())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("teachingWeeks", getTeachingWeeks())
            .append("calendarStartWeek", getCalendarStartWeek())
            .append("status", getStatus())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("dictionaryValue", getDictionaryValue())
            .toString();
    }


}
